ইলাস্টিকসার্চ (ElasticSearch)

Security Features এবং User Authentication

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - Elasticsearch Security | NCTB BOOK

Elasticsearch-এর Security Features এবং User Authentication

Elasticsearch-এ ডেটা সুরক্ষা এবং অ্যাক্সেস নিয়ন্ত্রণ নিশ্চিত করার জন্য বিভিন্ন Security Features এবং User Authentication পদ্ধতি রয়েছে। এগুলো Elasticsearch-কে সুরক্ষিত করে এবং অনুমোদিত ইউজারদের ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় অথেন্টিকেশন এবং অথরাইজেশন নিয়ন্ত্রণে সহায়তা করে। Elasticsearch ৭.১০ এবং এর পরবর্তী ভার্সনে X-Pack সিকিউরিটি বিল্ট-ইন থাকে, যা ইউজার অথেন্টিকেশন, রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC), এবং ডেটা এনক্রিপশন সাপোর্ট করে।

1. Elasticsearch-এর Security Features

a) TLS/SSL Encryption

  • Elasticsearch ক্লাস্টার এবং ক্লায়েন্টের (যেমন Kibana) মধ্যে ডেটা এনক্রিপশন করতে TLS/SSL ব্যবহার করা হয়।
  • Transport Layer Encryption: নোডগুলোর মধ্যে কমিউনিকেশন সিকিউর করতে Transport Layer Security সক্রিয় করুন।
  • HTTPS Setup: HTTP API কল এনক্রিপ্ট করতে HTTPS সক্রিয় করুন। সার্টিফিকেট এবং কী কনফিগার করতে elasticsearch.yml ফাইল ব্যবহার করুন:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12

b) Role-based Access Control (RBAC)

  • RBAC ব্যবহার করে আপনি ইউজারদের নির্দিষ্ট ইনডেক্স, API, এবং ডকুমেন্টের উপর অ্যাক্সেস কন্ট্রোল সেট করতে পারেন।
  • RBAC সিস্টেমে নির্দিষ্ট রোল তৈরি করে সেই রোলের অধীনে ইউজারদের জন্য ইনডেক্স, ডকুমেন্ট এবং API এর প্রিভিলেজ ডিফাইন করা যায়। উদাহরণ:
{
 "indices": [
   {
     "names": ["customer-index"],
     "privileges": ["read", "write"]
   }
 ]
}

c) Audit Logging

  • Audit Logging সক্রিয় করলে Elasticsearch সমস্ত ইউজার এবং API এক্টিভিটি লগ করে। এতে কোনো সন্দেহজনক এক্টিভিটি সহজে মনিটর করা যায়।
  • Audit Logging কনফিগার করতে elasticsearch.yml ফাইলে সেটিংস যুক্ত করুন:
xpack.security.audit.enabled: true

d) Document এবং Field Level Security

  • Elasticsearch-এর সাহায্যে আপনি ডকুমেন্ট এবং ফিল্ড লেভেলে অ্যাক্সেস কন্ট্রোল কনফিগার করতে পারেন। এটি নিশ্চিত করে যে নির্দিষ্ট ইউজার বা রোল শুধুমাত্র নির্দিষ্ট ডকুমেন্ট বা ফিল্ড দেখতে বা মডিফাই করতে পারে।
  • উদাহরণ: কোনো ইউজার শুধু নির্দিষ্ট ডিপার্টমেন্টের ডেটা অ্যাক্সেস করতে পারবে এমন কন্ডিশন সেট করা।

e) IP Filtering এবং Firewall Integration

  • Elasticsearch-এ IP Filtering সেট করে নির্দিষ্ট IP অ্যাড্রেস বা IP রেঞ্জ থেকে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
  • ফায়ারওয়াল এবং অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার করে HTTP (9200) এবং Transport (9300) পোর্ট শুধুমাত্র নির্দিষ্ট IP-এর জন্য খুলে রাখুন।

2. User Authentication এবং Authorization

Elasticsearch-এ ইউজার অথেন্টিকেশন এবং অথরাইজেশন সিস্টেম সেটআপ করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এগুলো নিশ্চিত করে যে শুধুমাত্র অথেন্টিকেটেড এবং অথরাইজড ইউজাররাই ডেটা এবং সিস্টেম অ্যাক্সেস করতে পারে।

a) Built-in User Authentication

  • Elasticsearch-এর বিল্ট-ইন ইউজার অথেন্টিকেশন ফিচার ব্যবহার করে ইউজার তৈরি এবং রোল এসাইন করা যায়।
  • ডিফল্টভাবে elastic ইউজার অ্যাডমিনিস্ট্রেটর রোল নিয়ে আসে, যার পাসওয়ার্ড কনফিগার করার জন্য কমান্ড ব্যবহার করা হয়:
bin/elasticsearch-setup-passwords interactive
  • নতুন ইউজার এবং রোল তৈরি করতে Kibana UI অথবা Elasticsearch API ব্যবহার করতে পারেন।

b) Role Creation এবং Assignment

  • Elasticsearch-এর RBAC সিস্টেম ব্যবহার করে বিভিন্ন রোল তৈরি করুন এবং ইউজারদের এসাইন করুন। উদাহরণ:
{
 "cluster": ["manage", "monitor"],
 "indices": [
   {
     "names": ["sales-*"],
     "privileges": ["read"]
   }
 ]
}
  • একটি নির্দিষ্ট ইউজারকে নির্দিষ্ট রোল অ্যাসাইন করুন:
POST /_security/user/sales_user
{
 "password" : "password123",
 "roles" : [ "sales_role" ]
}

c) External Authentication Providers (LDAP, SAML, OAuth)

  • Elasticsearch এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার যেমন LDAP, SAML, এবং OAuth 2.0 সাপোর্ট করে। এই প্রোভাইডারগুলো ইন্টিগ্রেট করে কর্পোরেট ডিরেক্টরি বা আইডেন্টিটি ম্যানেজমেন্ট সিস্টেম ব্যবহার করে ইউজার অথেন্টিকেশন করা যায়।
  • LDAP Integration: LDAP সার্ভারের কনফিগারেশন elasticsearch.yml ফাইলে কনফিগার করুন:
xpack.security.authc.realms.ldap.ldap1:
 order: 0
 url: "ldap://ldap.example.com:389"
 bind_dn: "cn=admin,dc=example,dc=com"
 bind_password: "password"
 user_search:
   base_dn: "dc=example,dc=com"
  • SAML Integration: SAML প্রোটোকল ব্যবহার করে সিঙ্গল সাইন-অন (SSO) সক্ষম করা যায়।

d) API Key এবং Token-based Authentication

  • Elasticsearch API অ্যাক্সেস করার জন্য API Key বা Token-based অথেন্টিকেশন ব্যবহার করা যেতে পারে, যা নির্দিষ্ট ইউজার বা রোলের জন্য সিকিউরিটি নিশ্চিত করে।
  • API Key তৈরি করার জন্য:
POST /_security/api_key
{
 "name": "my-api-key",
 "role_descriptors": {
   "my_role": {
     "cluster": ["all"],
     "index": [
       {
         "names": ["*"],
         "privileges": ["read", "write"]
       }
     ]
   }
 }
}
  • এই API কী নির্দিষ্ট সময়ের জন্য অ্যাক্সেস দিতে পারে এবং স্কোপ-ভিত্তিক প্রিভিলেজ কনফিগার করা যায়।

3. Elasticsearch Security Best Practices

  • Enable HTTPS (TLS) Everywhere: ক্লাস্টারের সব নোড এবং ক্লায়েন্টের মধ্যে HTTPS এনক্রিপশন সক্রিয় রাখুন।
  • Use Strong Passwords and Rotate Them Regularly: ইউজারদের জন্য স্ট্রং পাসওয়ার্ড পলিসি প্রয়োগ করুন এবং নিয়মিত পাসওয়ার্ড পরিবর্তন করুন।
  • Apply Least Privilege Principle: প্রতিটি ইউজার বা রোলকে শুধুমাত্র তাদের প্রয়োজনীয় মিনিমাম প্রিভিলেজ দিন।
  • Monitor Audit Logs: Audit Logging সক্রিয় করে নিয়মিত লগ মনিটর করুন, যাতে সন্দেহজনক এক্টিভিটি দ্রুত সনাক্ত করা যায়।
  • Limit Public Access: প্রোডাকশন পরিবেশে Elasticsearch কখনোই ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য না রাখুন। শুধুমাত্র ট্রাস্টেড নোড এবং ক্লায়েন্ট থেকে অ্যাক্সেস দিন।

উপসংহার

Elasticsearch-এ সিকিউরিটি ফিচার এবং ইউজার অথেন্টিকেশন পদ্ধতি সঠিকভাবে ব্যবহার করে আপনি সিস্টেম এবং ডেটাকে সুরক্ষিত রাখতে পারেন। সঠিক কনফিগারেশন, RBAC, TLS/SSL এনক্রিপশন, এবং এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার ইন্টিগ্রেশন ব্যবহার করে একটি শক্তিশালী এবং সিকিউর পরিবেশ তৈরি করা সম্ভব।

Content added By
Promotion